/**
 * Methods regarding auth operations
 * @class ElggMap 
 */
ElggMap.provide( '', {
	/**
	 * Find out if the user is logged in
	 * calls auth.isLoggedIn on the server
	 * 
	 * @return boolean true if the user is logged in
	 */
	isLoggedIn: function()
	{
		response = ElggMap.api( "auth.isLoggedIn" );
	
		return response.response;
	},
	/**
	 * Find out the current session status from the server
	 * Response:
	 * {
	 *   status: 'notConnected' | 'connected'
	 * }
	 *
	 */
	getLoginStatus: function()
	{
		response = ElggMap.api( "auth.getLoginStatus" );
	},
	
	/**
	 * Shows the login dialog 
	 */
	login: function()
	{
		ElggMap.ui.dialog("dialog.auth.login", {
			display: "popup"
		}, function() {
			ElggMap.Event.fire("dialog.auth.login.show");
		});
		
		// Cuando el usuario inicia sesión, cierro el diálogo
		// y recargo la página
		ElggMap.Event.subscribe("auth.login", function() {
			ElggMap.ui.popupElement.dialog('close');
			// Actualizo el dialog de información de sesión cuando
			// el usuario inicie sesión
			ElggMap.showSessionInfo();
			// Recargar la página
			document.location = '';
		});

		// cuando se muestre el diálog transformo el form
		// para que submitee por AJAX
        ElggMap.Event.subscribe("dialog.auth.login.show", function() {
			ElggMap.__ajaxifyLoginForm();
		})
		return false;
	},
	
	/**
	 * Logs the user out
	 */
	logout: function()
	{
			// update user session info dialog when user logs out
		ElggMap.Event.subscribe("auth.logout", ElggMap.showSessionInfo);
		
		response = ElggMap.api('auth.logout', false, function() {
			//recargar la página
			document.location = '';
		});
	},
	
	/**
	 * Shows the dialog with session info
	 */
	showSessionInfo: function()
	{
		ElggMap.ui.dialog( "dialog.auth.sessioninfo", {
			display: "inline",
			selector: "#emSessionInfo"
		}, function() {
			// Handle click on login button/link if exists
			$("#loginButton").click( ElggMap.login );
			// Handle click on logout button/link if exists
			$("#logoutButton").click( ElggMap.logout );
		});
	},
	
	/**
	 * Shows the register dialog
	 */
	register: function()
	{
		ElggMap.ui.dialog("dialog.auth.register", {
			display: "popup"
		},
		jQuery.proxy(ElggMap.__ajaxifyRegisterForm,ElggMap)
		);
	},
	
	/**
	 * Makes the Register Form an ajax form
	 * @private
	 */
	__ajaxifyRegisterForm: function()
	{
		$(ElggMap.ui.popup).find('form').ajaxForm({

		}
		);
	},
	/**
	 * Makes the Login Form an ajax form
	 * @private
	 */
	__ajaxifyLoginForm: function()
	{
		$(ElggMap.ui.popupElement).find("form").submit( function() {
			ElggMap._submitLoginForm();
			return false;
		});
	},
	
	_submitLoginForm: function()
	{
		var options = $(ElggMap.ui.popupElement).find('form').serializeObject();
		ElggMap.api('auth.login', options);	
		return false;
	}

});
